package bancos;

import conexion.CConexion;
import contabilidad.CCo100;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import utilitario.CFecha;

public class CBacq100 extends CConexion {

    CFecha fechaSistema = new CFecha();
    private String compania = null;
    private String codigoBanco = null;
    private String cuentaBanco = null;
    private String tipoDocumento = null;
    private String numeroSecuencial = null;
    private String anio = null;
    private String mes = null;
    private String numeroSolicitud = null;
    private String numeroComprobante = null;
    private String numeroCheque = null;
    private String numeroReferenciaCxp = null;
    private String numeroAsiento = null;
    private String coco = null;
    private String fechaCheque = null;
    private String codigoProveedor = null;
    private String beneficiario = null;
    private String valorCheque = null;
    private String tret = null;
    private String tref = null;
    private String ubic = null;
    private String inau = null;
    private String inem = null;
    private String inen = null;
    private String inan = null;
    private String fechaAnulacionCheque = null;
    private String observacion = null;
    private String usuarioActual = null;
    private String fechaActual = null;

    public CBacq100() {
        super();
        this.compania = login.getCompaniaActual();
        this.fechaActual = fechaSistema.getFechaCompleta();
        this.usuarioActual = login.getUsuarioLogin();
        this.tipoDocumento = "CE";
        this.numeroComprobante = "0";
        this.numeroCheque = "0";
        this.coco = "NA";
        this.tret = "0.00";
        this.ubic = "0";
        this.inau = "S";
        this.inem = "N";
        this.inen = "N";
        this.inan = "N";
        this.fechaAnulacionCheque = fechaActual;
    }

    public void guardarCabecera(String[] cabecera) throws SQLException {
        this.codigoBanco = cabecera[0];
        this.cuentaBanco = cabecera[1];
        this.numeroSecuencial = cabecera[2];
        this.anio = cabecera[3];
        this.mes = cabecera[4];
        this.numeroSolicitud = cabecera[5];
        this.numeroReferenciaCxp = cabecera[6];
        this.fechaCheque = cabecera[7];
        this.codigoProveedor = cabecera[8];
        this.beneficiario = cabecera[9];
        this.valorCheque = cabecera[10];
        this.tref = cabecera[11];
        this.observacion = cabecera[12];
        this.numeroAsiento = cabecera[13];
        Statement stncCabecera = this.getConexion().createStatement();
        String sqlObservacion = "insert into bacq100 values('" + compania + "','" + codigoBanco + "','" + cuentaBanco + "','" + tipoDocumento + "'," + numeroSecuencial + ",'" + anio + "','" + mes + "','" + numeroSolicitud + "','" + numeroComprobante + "','" + numeroCheque + "','" + numeroReferenciaCxp + "','" + numeroAsiento + "','" + coco + "','" + fechaCheque + "'," + codigoProveedor + ",'" + beneficiario + "'," + valorCheque + "," + tret + "," + tref + ",'" + ubic + "','" + inau + "','" + inem + "','" + inen + "','" + inan + "','" + fechaAnulacionCheque + "','" + observacion + "','" + usuarioActual + "','" + usuarioActual + "','" + fechaActual + "','" + fechaActual + "')";
        stncCabecera.execute(sqlObservacion);
        stncCabecera.close();
    }
    public void guardarCabeceraIngreso(String[] cabecera) throws SQLException {
        this.codigoBanco = cabecera[0];
        this.cuentaBanco = cabecera[1];
        this.numeroSecuencial = cabecera[2];
        this.anio = cabecera[3];
        this.mes = cabecera[4];
        this.numeroSolicitud = cabecera[5];
        this.numeroReferenciaCxp = cabecera[6];
        this.fechaCheque = cabecera[7];
        this.codigoProveedor = cabecera[8];
        this.beneficiario = cabecera[9];
        this.valorCheque = cabecera[10];
        this.tref = cabecera[11];
        this.observacion = cabecera[12];
        this.numeroAsiento = cabecera[13];
        this.numeroComprobante = cabecera[14];
        this.tipoDocumento = "CI";
        Statement stncCabecera = this.getConexion().createStatement();
        String sqlObservacion = "insert into bacq100 values('" + compania + "','" + codigoBanco + "','" + cuentaBanco + "','" + tipoDocumento + "'," + numeroSecuencial + ",'" + anio + "','" + mes + "','" + numeroSolicitud + "','" + numeroComprobante + "','" + numeroCheque + "','" + numeroReferenciaCxp + "','" + numeroAsiento + "','" + coco + "','" + fechaCheque + "'," + codigoProveedor + ",'" + beneficiario + "'," + valorCheque + "," + tret + "," + tref + ",'" + ubic + "','" + inau + "','" + inem + "','" + inen + "','" + inan + "','" + fechaAnulacionCheque + "','" + observacion + "','" + usuarioActual + "','" + usuarioActual + "','" + fechaActual + "','" + fechaActual + "')";
        stncCabecera.execute(sqlObservacion);
        stncCabecera.close();
    }

    public ResultSet buscarCheques(String codigoBanco, String cuentaBanco, String fecha) throws SQLException {
        Statement stncCheques = this.getConexion().createStatement();
        String sqlCheques = "select * from bacq100 where bacq100nocia = '" + compania + "' and bacq100tido = 'CE' and bacq100inan<>'S'";
        if (!codigoBanco.isEmpty()) {
            sqlCheques += " and bacq100coba = '" + codigoBanco + "'";
        }
        if (!cuentaBanco.isEmpty()) {
            sqlCheques += " and bacq100ctab = '" + cuentaBanco + "'";
        }
        if (!fecha.isEmpty()) {
            sqlCheques += " and bacq100fech = '" + fecha + "'";
        }
        ResultSet rsCheques = stncCheques.executeQuery(sqlCheques);
        return rsCheques;
    }

    public ResultSet contabilidadCheque(String anio, String mes, String noas) throws SQLException {
        CCo100 co100 = new CCo100();
        ResultSet rsEmitido = null;
        try {
            rsEmitido = co100.buscarCabeceraPorNumeroDeAsiento(anio, mes, noas);
            //co100.cerrar();
        } catch (SQLException ex) {
            Logger.getLogger(CBacq100.class.getName()).log(Level.SEVERE, null, ex);
            //co100.cerrar();
        }
        return rsEmitido;
    }

    public boolean eliminarContabilidadCheque(String anio, String mes, String noas) {
        boolean resultado = false;
        CCo100 co100 = new CCo100();
        try {
            if (co100.buscarCabeceraPorNumeroDeAsiento(anio, mes, noas).next()) {
                co100.eliminarCo101(anio, mes, noas);
                co100.eliminarCo100(anio, mes, noas);
                co100.exito();
                co100.cerrar();
                resultado = true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(CBacq100.class.getName()).log(Level.SEVERE, null, ex);
            co100.fracaso();
            co100.cerrar();
            resultado = false;
        }
        return resultado;
    }

    public ResultSet buscarCheque(String coba, String ctab, String tido, String nose) throws SQLException {
        Statement stncCheque = this.getConexion().createStatement();
        String sqlCheque = "select * from bacq100 where bacq100nocia = '" + compania + "' " + " " + " and bacq100coba = '" + coba + "' " + " " + " and bacq100ctab = '" + ctab + "' " + " " + " and bacq100tido = '" + tido + "' and bacq100nose = '" + nose + "'";
        ResultSet rsCheque = stncCheque.executeQuery(sqlCheque);
        return rsCheque;
    }

    public void eliminarCheque(String coba, String ctab, String tido, String nose, String noso) throws SQLException {
        Statement stncDeleteCheque = this.getConexion().createStatement();
        String sqlDeleteCheque = "delete from bacq100 where bacq100nocia = '" + compania + "' and bacq100coba = '" + coba + "' and bacq100ctab = '" + ctab + "' and bacq100nose = '" + nose + "' and bacq100noso = '" + noso + "'";
        stncDeleteCheque.execute(sqlDeleteCheque);
        stncDeleteCheque.close();
    }

    public void actualizaCabecera(String egreso, String cheque, String coba, String ctab, String tido, String nose, String noso) throws SQLException {
        Statement stncUpBacq100 = this.getConexion().createStatement();
        String sqlUpBacq100 = "update bacq100 set bacq100noco = '" + egreso + "', bacq100noch = '" + cheque + "' where bacq100nocia = '" + compania + "' " + " and bacq100coba = '" + coba + "' and bacq100ctab = '" + ctab + "' and bacq100tido = '" + tido + "' and bacq100nose = '" + nose + "' and bacq100noso = '" + noso + "'";
        stncUpBacq100.executeUpdate(sqlUpBacq100);
        stncUpBacq100.close();
    }
    public void actualizarCheque(String copr, String bene, String valo, String obse, String fech, String ctab,String nose, String ano, String mes, String noso) throws SQLException
    {
        String sqlUpCheque = "update banchq100 set cq100copr = '" + copr + "', cq100bene = '" + bene + "', cq100valo = '" + valo + "',cq100obse = '" + obse + "', cq100tref = '" + valo + "',cq100fech = '" + fech + "' where cq100nocia = '" + compania + "' and cq100ctab = '" + ctab + "' and cq100nose = '" + nose + "' and cq100ano = '" + ano + "'  and cq100mes = '" + mes + "' and cq100noso = '" + noso + "'";
        Statement stncUpCheque = this.getConexion().createStatement();
        stncUpCheque.executeUpdate(sqlUpCheque);
        stncUpCheque.close();
    }

    public void anularCheque(String coba, String ctab, String tido, String nose) throws SQLException {
        String sqlAnular = "update bacq100 set bacq100valo = 0.00, bacq100tref = '0', bacq100tret = '0', bacq100inan = 'S' where bacq100nocia = '" + compania + "' and bacq100coba = '" + coba + "' and bacq100ctab = '" + ctab + "' and bacq100tido = '" + tido + "' and bacq100nose = '" + nose + "'";
        Statement stncAnular = this.getConexion().createStatement();
        stncAnular.executeUpdate(sqlAnular);
        stncAnular.close();
    }    
}
